package com.quectel.core.module.parkingcard.dto;

import com.quectel.core.module.car.dto.CarDto;
import com.quectel.core.module.carparking.dto.CarParkingSpaceDto;
import com.quectel.core.module.village.dto.VillageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author ryan
 * @email ryan.ran@quectel.com
 * @date 2023/04/18 17:23
 */
@Data
@Schema
public class ParkingCardOrderDto implements Serializable {

    /**
     * 小区
     */
    @Schema(description = "小区")
    private Long id;

    /**
     * 租户id
     */
    @Schema(description = "租户id")
    private Long tenantId;

    /**
     * 所属小区id
     */
    @Schema(description = "所属小区id")
    private Long villageId;

    /**
     * 来源类型1住户 2管理员
     */
    @Schema(description = "来源类型1住户 2管理员")
    private Byte sourceType;

    /**
     * 来源1住户id 2管理员id
     */
    @Schema(description = "来源1住户id 2管理员id")
    private Long sourceId;

    /**
     * 通用订单id
     */
    @Schema(description = "通用订单id")
    private Long orderId;

    /**
     * 通用订单编号
     */
    @Schema(description = "通用订单编号")
    private String orderNo;

    /**
     * 在当前小区是否为已注册车辆 0否 1是
     */
    @Schema(description = "在当前小区是否为已注册车辆 0否 1是")
    private Byte isRegistCar;

    /**
     * 住户id
     */
    @Schema(description = "住户id")
    private Long householdId;

    /**
     * 车辆id
     */
    @Schema(description = "车辆id")
    private Long carId;

    /**
     * 审核状态1待审核2已审核3驳回
     */
    @Schema(description = "审核状态1待审核2已审核3驳回")
    private Byte auditStatus;

    /**
     * 购买的月卡id
     */
    @Schema(description = "购买的月卡id")
    private Long cardId;

    /**
     * 车牌号
     */
    @Schema(description = "车牌号")
    private String license;

    /**
     * 车牌颜色 车牌颜色 1蓝底白字 2黄底黑字 3白底黑字 4绿底黑字 5黑底白字 6 02式车牌 7粤Z车牌 8FV车牌 9其他
     */
    @Schema(description = "车牌颜色 车牌颜色 1蓝底白字 2黄底黑字 3白底黑字 4绿底黑字 5黑底白字 6 02式车牌 7粤Z车牌 8FV车牌 9其他")
    private Byte licenseColor;

    /**
     * 购买月卡类型 1月卡 2季卡 3半年卡 4年卡
     */
    @Schema(description = "购买月卡类型 1月卡 2季卡 3半年卡 4年卡")
    private Byte cardType;

    /**
     * 月卡配置快照
     */
    @Schema(description = "月卡配置快照")
    private String cardJson;

    /**
     * 分配车位id
     */
    @Schema(description = "分配车位id")
    private Long carParkingSpaceId;

    /**
     * 支付方式 支付方式 1支付宝 2微信 3小程序 9线下
     */
    @Schema(description = "支付方式 1支付宝 2微信 3小程序 9线下")
    private Byte payType;

    /**
     * 支付状态 0未缴费 1已缴费 2已退款
     */
    @Schema(description = "支付状态 0未缴费 1已缴费 2已退款 ")
    private Byte payStatus;

    /**
     * 付款金额
     */
    @Schema(description = "付款金额")
    private BigDecimal payAmount;

    /**
     * 退款金额
     */
    @Schema(description = "退款金额")
    private BigDecimal refundAmount;

    /**
     * 退款时间
     */
    @Schema(description = "退款时间")
    private Date refundTime;

    /**
     * 开票状态0未提交开票 1开票中2已开票3已红冲4已关闭
     */
    @Schema(description = "开票状态0未提交开票 1开票中2已开票3已红冲4已关闭")
    private Byte invoiceStatus;

    /**
     * 支付凭证
     */
    @Schema(description = "支付凭证")
    private String paymentVoucher;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;

    /**
     * 办理时间
     */
    @Schema(description = "办理时间")
    private Date transactTime;

    /**
     * 审核日期
     */
    @Schema(description = "审核日期")
    private Date auditTime;

    /************非数据库字段 start ************/
    /**
     * 小区信息
     */
    private VillageDto village;
    /**
     * 车辆信息
     */
    private CarDto car;
    /**
     * 月卡信息
     */
    private ParkingCardDto parkingCard;
    /**
     * 车位信息
     */
    private CarParkingSpaceDto carParkingSpace;
    /**
     * 实收金额
     */
    private BigDecimal receiptsAmount;
    /**
     * 设备下发状态信息
     */
    private String parkingCardOrderDeviceStatus;
    /**
     * 设备下发详细信息
     */
    private List<ParkingCardOrderDeviceDto> parkingCardOrderDeviceDetail;
    /************非数据库字段 end **************/
}
